package com.kedacom.testlego

import com.kedacom.lego.annotation.LogOn
import com.kedacom.lego.core.LegoActivityManager
import com.kedacom.lego.fast.LegoFastApplication
import com.kedacom.util.log.CrashCallback
import com.kedacom.util.log.LogBuilder
import com.kedacom.util.log.LogPriority


@LogOn
class MainApplication : LegoFastApplication() {

    override fun onCreate() {
        super.onCreate()
//        MainDatabase.initDatabase(this)
    }


    override fun isDebugMode(): Boolean {
        return BuildConfig.DEBUG
    }

    override fun logConfig() {
        //默认情况下记录Error级别及以上的日志，以及Java层Crash日志
        //日志存储路径 /sdcard/kedacom/${appId}
        LogBuilder.builder()
            .recordJavaCrash(true) //是否记录Java层崩溃日志
            .defaultCrashCallback(object : CrashCallback {
                //apk崩溃监听回调，自定义业务处理
                override fun callback(thread: Thread, throwable: Throwable) {
                    LegoActivityManager.clear()
                }
            })
            .recordLog(true) // 是否持久化非crash的日志
            // 设置每个log文件的最大长度，不设置默认为10M
            .maxFileSize(5 * 1024 * 1024) //                    .expr("(unit_manage)")//筛选TAG
            .logPriority(LogPriority.Warn) //logcat日志记录级别，默认Error
            .retainLog(5) //日志文件保留天数，默认7天
            // 设置持久化日志来源为logcat还是LegoLog,默认是LegoLog
            // LogBuilder.LogSource.ALL:表示获取logcat日志和LegoLog类打印的的日志都记录,两个线程都开
            // LogBuilder.LogSource.Logcat:表示只记录logcat日志，即只打开获取logcat日志的线程
            // LogBuilder.LogSource.LegoLog:表示不开启获取logcat日志的线程，只开启记录LegoLog类打印的的日志的线程
            .logSource(LogBuilder.LogSource.LegoLog)
            .build(this)
    }
}
